package partThree;

import java.io.File;
import java.io.IOException;
import java.util.Arrays;

/* 本类用于测试文件类File*/
public class TestFile {
    public static void main(String[] args) throws IOException {
        //1.创建file类的对象
        /* 1.ready目录与1.txt需要自己手动创建
         *  2.File需要导包：import java.io.File
         *  3.路径是String类型，必须写正确，不然找不到文件
         *  4.完整的文件名是包含俩部分，文件名+后缀名*/
        File file = new File("E:\\ready\\1.txt");

        //2.测试File中的常用方法
        System.out.println("文件的字节量为："+file.length()); //3.获取文件的字节量
        System.out.println("判断文件是否存在："+file.exists()); //4.判断文件是否存在
        System.out.println("判断是否为文件："+file.isFile()); //判断是否为文件
        System.out.println("判断是否为文件夹："+file.isDirectory()); //判断是否为文件夹
        System.out.println("获取文件名："+file.getName()); // 1.txt获取文件名
        System.out.println("获取父级路径："+file.getParent()); // E:\ready 获取父级路径
        System.out.println("获取带盘符的完整（绝对）路径："+file.getAbsolutePath()); //E:\ready\1.txt 获取带盘符的完整（绝对）路径


        //2.2 测试创建与删除
        /* new只会在内存中创建一个File类型的对象
         * 并不会帮你在磁盘中创建一个真实存在的2.txt文件*/
        file = new File("D:\\ready\\2.txt");

        /*创建一个之前不存在的2.txt文件，如果创建成功，会返回true
         *  如果指定创建的文件的路径不对，会抛出异常：java.io.Excepyion
         *  所以需要提前处理这个问题，我们暂时选择在main()上抛出
         *  这个io异常是目前我们遇到的强制要求必须预先去处理的异常
         *  如果不处理，不能通过编译，方法的调用会报错
         * 会报错，文件路劲异常，就不能创建文件，直接throws，后续会学习如何解决*/
        System.out.println("创建之前不存在的文件："+file.createNewFile());  //创建之前不存在的文件

        file = new File("E:\ready\\m");
        System.out.println("创建之前不存在的单层文件夹："+file.mkdir()); //创建之前不存在的单层文件夹

        file = new File("E:\ready\\a\\b\\c");
        System.out.println("创建之前不存在的多层文件夹："+file.mkdir()); //创建之前不存在的多层文件夹

        System.out.println("删除文件或者空文件夹："+file.delete());//c被删除,删除文件或者空文件夹
        file  = new File("D:\\ready\\a");
        System.out.println("删除非空文件夹："+file.delete());//false,因为a目录里还有b目录
        file  = new File("D:\\ready\\2.txt");
        System.out.println("删除文件或者空文件夹："+file.delete());//true,删除2.txt文件成功

        //2.3 测试展示文件列表
        file = new File("D:\\ready");
        String[] listName = file.list();
        System.out.println("展示文件列表："+Arrays.toString(listName));
        /* 这句话会报错，因为这是一个String[]，所以数组中每个元素都是String类型的
         * 那么只能用String类中的方法，而isDirectory是file类中的方法*/
        // System.out.println(list[0].isDirectory);

        File[] fs = file.listFiles(); // 常用的是此方法
        System.out.println("展示文件列表："+Arrays.toString(fs));
        System.out.println("展示文件列表："+fs[0].length());

    }
}